<?php
class Series_active_model extends CI_Model{
	
	function __construct(){
		parent::__construct();
		$this->load->database();
	}
	
	/**
	 * 	FUNCION QUE REGRESA LAS SERIES ACTIVAS EXISTENTES
	 * 
	 *  @return mixed
	 */
	public function getSerieActive(){
		//	VERIFICA SI EXISTE SERIES ACTIVAS
		if($this->db->count_all('series_activas')>0){
			$series_activas = array('series_active' => array());
			
			//	QUERY PARA OBTENER LAS SERIES ACTIVAS
			$query = $this->db->query('
					SELECT 
							sa.id_activa as serie_active,
							sa.id_temporada as id_season , 
							url.titulo as title,
							CONCAT("series", "~", sa.id_temporada, "~", url.titulo_limpio, "~" , "temporada",  "~" , url.no_temporada) as link,  
							sa.url_img as image,
							url.no_temporada as season,
							sa.no_orden as no_order
							
					FROM series_activas AS sa
					
					INNER JOIN (
						SELECT s.titulo, s.titulo_limpio, st.no_temporada, st.id_temporada 
						FROM series AS s 
							INNER JOIN series_temporadas AS st ON s.id_serie = st.id_serie
					) AS url ON url.id_temporada = sa.id_temporada 
					
					ORDER BY sa.no_orden ASC'
			);
		 	
			//	OBTIENE EL RESUTADO DEL QUERY EJECUTADO
			$result	= $query->result_array();
			$series_activas['series_active'] = $result;
			
			//	REGRESA EL ARRAY CON LA INFORMACION DE LAS SERIES ACTIVAS.
			return $series_activas;
		}
		//	SI NO EXISTE SERIES ACTIVAS REGRESA FALSE
		return FALSE;
	}
	
	
	/**
	 * 	FUNCION QUE GUARDA LA INFORMACION DE LAS SERIES ACTIVAS.
	 * 
	 * 	@param	array $params				Parametros POST enviados
	 * 
	 *	@return mixed
	 **/
	public function saveInfoSerieActive($params){
		
		//	VALIDA SI EXISTE LA TEMPORADA DE LA SERIE ACTIVA Y TAMBIEN VALIDA QUE NO EXISTA LA SERIE ACTIVA QUE QUIERA GUARDAR
		if($this->exist('series_temporadas', array('id_temporada' => $params['season'], 'prox_estreno' => 0)) && !$this->exist('series_activas', array('id_temporada' => $params['season']))){
			
			//	CARGA LAS LIBRERIAS NECESARIAS
			// $this->load->library('uploadfiles');
			$this->load->library('imageshack');
			
			//	OBTIENE LA URL DE LA IMAGE
			$data_image	= $this->getPosterUrl($params, 'image', array('280x160'));
			$image_url	= $data_image['280x160'];
			// $image_url	= $data_image['280x160']['url'];
			
			//	ARRAY QUE CONTIENE LOS DATOS REQUERIDOS DE LA SERIE ACTIVA
			$data	= array(
								'id_temporada'	=> $params['season'],
								'url_img'		=> $image_url,
								'no_orden'		=> $params['no_order']
						);
			
			//	EJECUTA EL INSERT PARA GUARDAR LOS DATOS DE LA SERIE ACTIVA
			$this->db->insert('series_activas',$data);
			//	OBTIENE EL ID DE LA SERIE ACTIVA AGREGADA
			$id_serie_active = $this->db->insert_id();
			
			//	REGRESA ARRAY CON LOS PARAMETROS SEASON Y ID_SERIE_ACTIVE
			return array('season' => $params['season'] , 'id_serie_active' => $id_serie_active);
			
		}
		//	REGRESA FALSE SI NO EXISTE LA TEMPORADA Y/O YA EXISTE LA SERIE ACTIVA 
		return FALSE;
	}
	
	
	/**
	 *	ELIMINA UNA SERIE ACTIVA 
	 * 
	 * @param	array $params					Parametros POST enviados
	 * 
	 * @return	mixed
	 */
	
	public function deleteSerieActive($params){
		if($this->exist('series_activas', array('id_activa'=>$params['serie_active']))){
			$this->db->delete('series_activas',array('id_activa' => $params['serie_active']));
			return array('Message' => 'Serie Activa eliminada correctamente');
		}
		return FALSE;
	}
	
	
	
	
	/**
	 * 	FUNCION QUE ACTUALIZA LOS DATOS DE UNA SERIE ACTIVA
	 * 
	 * 	@param	array $params					Parametros POST enviados
	 * 
	 * 	@return mixed
	 */
	public function updateInfoSerieActive($params){
		
		//	VALIDA QUE EXISTE LA SERIE ACTIVA QUE QUIERA ACTUALIZAR
		if($this->exist('series_activas', array('id_activa' => $params['serie_active']))){
			
			//	CARGA LAS LIBRERIAS NECESARIAS
			// $this->load->library('uploadfiles');
			$this->load->library('imageshack');
			
			//	CONTIENE LOS DATOS A ACTUALIZAR
			$data	= array(
								'no_orden'	=> $params['no_order']
						);
			 
			//	SI EXISTE EL PARAMETRO $_PARAMS['IMAGE'] O $_FILES['IMAGE'] OBTIENE LA URL DE LA IMAGEN
			if(isset($_FILES['image']) || (isset($params['image']) && !empty($params['image']))){
				$data_image	= $this->getPosterUrl($params, 'image', array('280x160'));
				if(is_array($data_image)){
					$image_url	= $data_image['280x160'];
					// $data['url_img']	= $data_image['280x160']['url'];
				}
			}
			
			if(isset($params['season'])){
				$data['id_temporada'] = $params['season'];
			}
			
			// 	ACTUALIZA LOS DATOS DE LA SERIE ACTIVA
			$this->db->where('id_activa', $params['serie_active']);
			$this->db->update('series_activas',$data);
			
			//	REGRESA ARRAY CON EL PARAMETRO SEASON.
			return array('season' => $params['season']);
			
		}
		//	REGRESA FALSE SI NO EXISTE LA SERIE ACTIVA A ACTUALIZAR 
		return FALSE;
	}
	
	/**
	 * 	GETTER QUE REALIZA UN UPLOAD A IMAGESHACK Y OBTIENE LAS URL DE LOS POSTERS
	 * 
	 * 	@param	array 	$params					Parametros POST enviados
	 * 	@param	string 	$name_field				Nombre del $_FILE o $_POST
	 * 	@param	array	$size					Tamaño al que sera redimensionada la imagen
	 * 
	 * 	@return	array
	 */
	
	private function getPosterUrl($params,$name_field,$size){
		//	SI LLEGAN LOS PARAMETROS $_FILES['IMAGE'] Y $PARAMS['IMAGE'] DA LA PRIORIDAD A $_FILES['IMAGE'].
		//	SI LLEGA UNICAMENTE  $_FILES['IMAGE'] ENTRA.
		$bool = FALSE;
		if((isset($_FILES[$name_field]) && isset($params[$name_field])) || isset($_FILES[$name_field])){
			if(!empty($_FILES[$name_field]['name'])){
				$conf_img_image = array(
						'file' 		=> $name_field,
						'img_temp' 	=> TRUE,
						'size' 		=> $size
					); 
				$bool=TRUE;
			}
			else if(!empty($params[$name_field])){
				$conf_img_image = array(
					'file' 		=> $params[$name_field],
					'img_temp' 	=> FALSE,
					'size' 		=> $size
				);
				$bool=TRUE;
			}
		}
		else{
			$conf_img_image = array(
					'file' 		=> $params[$name_field],
					'img_temp' 	=> FALSE,
					'size' 		=> $size
				);
			$bool=TRUE;
		}
		
		if($bool){
			
			//	OBTIENE LAS URLS QUE LE PERTENCE A CADA UNO DE LOS TAMAÑOS DE LA IMAGEN.
			$this->imageshack->upload($conf_img_image);
			return array('280x160' => $this->imageshack->getInfo('image_link', $size));
			
			// $conf_img_image	= $this->uploadfiles->uploadFile($conf_img_image);
			// return $conf_img_image;
		}
		else return FALSE;
		
	}
	
	private function exist($table, $sql){
		$res = $this->db->get_where($table, $sql);
		if($res->num_rows() > 0){
			return TRUE;
		}
		return FALSE;
	}
}